כמה שפות תכנות חשופות למתקפת Denial of Service בגלל פונקציות השמירה במבני נתונים מפתח-ערך (hash data structures). בין השפות: php, java, python ו-ruby.
הבעיה נוגעת לשרתי web (או במקרה של רובי - לפריימוורקים).
במילים פשוטות: כש-PHP מכניסה ערך למערך, היא עושה גיבוב (hash, כמו md5) למפתח של המערך.
יש סבירות מסוימת שניתנת לחישוב, שעבור שני ערכים שונים, פונקציית הגיבוב תיתן את אותה תוצאה.
מכיוון שאין הגבלה על כמות הערכים המועברים ב-POST, התוקף יכול להעביר רשימה ארוכה של שדות, שעלולות לגרום לפונקציית הגיבוב להחזיר את אותו ערך עבור שניים מהם. במקרה הזה, השרת ייתקע למשך כמה שעות עם 100% CPU וישכח מכל השאר.
התיקון כבר מוכן ב-PHP ונמצא בגרסה 5.3.9 ובגרסה5.4 RC 4.
לדאוג אין סיבה, אבל לוודא שהשרת שלכם ושל חברת האחסון שלכם עובד עם הגירסה הכי אחרונה - תמיד כדאי.
יש גם את המידע המלא למתעניינים.
תגובות לכתבה:
אני 5.3.8 =\
תודה על המידה בכל אופן.
תודה רבה.
כרגע כולם 5.3.8
5.3.9 עוד לא יצא, גם לא 5.4
אהה חח אוקיי (:
תוודה (-:
כדי ש PHP תכניס ת'ערך למערך צריך למצוא דף PHP שמקבל נתונים ב POST ועושה בהם שימוש או אפשר "לספים" כל דף PHP
באופן כללי מספיק כל דף כי PHP בכל מקרה ממלאת את מערך ה POST גם אם אתה אף פעם לא ניגש אליו.
למרות שגם למצוא דף שמשתמש בנתונים האלה זה אחד הדברים הכי קלים :)
חחח עכשיו לתומכי DotNet יש עוד מה להוסיף בVS PHP.
יש לכלוך דומה גם על ASP?
כבר אין להם מה להוסיף. תיקנו את כזה כבר :)
מי שרוצה להפיל את השרת של עצמו:
<?php
for ($i = 0; $i <= 10000000; $i++){
$tmp[] = $i;
}
for ($i = 0; $i <= 10000000; $i++){
$_GET[] = $i;
}
?>
בשביל זה יש הגבלה על זמן ריצת הסקריפט ועל כמות הזיכרון המותרות לו.
למרות שיש דרכים יותר פשוטות להפיל את השרת של עצמך :)